home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Apple WWDC 1996
/
WWDC96_1996 (CD).toast
/
Technology Materials
/
MacOS 8 Resources
/
Developer Tools
/
Mac OS 8 Interfaces & Libraries
/
Interfaces
/
AIncludes
/
Translation.a
< prev
next >
Wrap
Text File
|
1996-05-01
|
12KB
|
349 lines
;
; File: Translation.a
;
; Contains: Translation Manager (Macintosh Easy Open) Interfaces.
;
; Version: Technology: Macintosh Easy Open 1.1
; Release: Universal Interfaces 3.0d3 on Copland DR1
;
; Copyright: © 1984-1996 by Apple Computer, Inc. All rights reserved.
;
; Bugs?: If you find a problem with this file, send the file and version
; information (from above) and the problem description to:
;
; Internet: apple.bugs@applelink.apple.com
; AppleLink: APPLE.BUGS
;
;
IF &TYPE('__TRANSLATION__') = 'UNDEFINED' THEN
__TRANSLATION__ SET 1
IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
include 'Types.a'
ENDIF
IF &TYPE('__FILES__') = 'UNDEFINED' THEN
include 'Files.a'
ENDIF
IF &TYPE('__COMPONENTS__') = 'UNDEFINED' THEN
include 'Components.a'
ENDIF
IF &TYPE('__TRANSLATIONEXTENSIONS__') = 'UNDEFINED' THEN
include 'TranslationExtensions.a'
ENDIF
; enumerated types on how a document can be opened
; typedef short DocOpenMethod
domCannot EQU 0
domNative EQU 1
domTranslateFirst EQU 2
domWildcard EQU 3
; 0L terminated array of OSTypes, or FileTypes
TypesBlock RECORD 0
elements ds.l 64
sizeof EQU * ; size: $100 (256)
ENDR
; typedef OSType * TypesBlockPtr
; Progress dialog resource ID
kTranslationScrapProgressDialogID EQU -16555
; block of data that describes how to translate
FileTranslationSpec RECORD 0
componentSignature ds.l 1 ; offset: $0 (0)
translationSystemInfo ds.l 1 ; offset: $4 (4)
src ds FileTypeSpec ; offset: $8 (8)
dst ds FileTypeSpec ; offset: $1C (28)
sizeof EQU * ; size: $30 (48)
ENDR
; typedef struct FileTranslationSpec * FileTranslationSpecArrayPtr
IF FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE THEN
;
;****************************************************************************************
;*
;* GetFileTypesThatAppCanNativelyOpen
;*
;* This routine returns a list of all FileTypes that an application can open by itself
;*
;* Enter: appVRefNumHint volume where application resides (can be wrong, and if is, will be used as a starting point)
;* appSignature signature (creator) of application
;* nativeTypes pointer to a buffer to be filled with up to 64 FileTypes
;*
;* Exit: nativeTypes zero terminated array of FileTypes that can be opened by app
;
;
; pascal OSErr GetFileTypesThatAppCanNativelyOpen(short appVRefNumHint, OSType appSignature, FileType *nativeTypes)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetFileTypesThatAppCanNativelyOpen
moveq #28,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION GetFileTypesThatAppCanNativelyOpen
ENDIF
;
;****************************************************************************************
;*
;* ExtendFileTypeList
;*
;* This routine makes a new list of file types that can be translated into a type in the given list
;* Used by StandardFile
;*
;* Enter: originalTypeList pointer to list of file types that can be opened
;* numberOriginalTypes number of file types in orgTypeList
;* extendedTypeList pointer to a buffer to be filled with file types
;* numberExtendedTypes max number of file types that can be put in extendedTypeList
;*
;* Exit: extendedTypeList buffer filled in with file types that can be translated
;* numberExtendedTypes number of file types put in extendedTypeList
;
;
; pascal OSErr ExtendFileTypeList(const FileType *originalTypeList, short numberOriginalTypes, FileType *extendedTypeList, short *numberExtendedTypes)
;
IF ¨ GENERATINGCFM THEN
Macro
_ExtendFileTypeList
moveq #9,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION ExtendFileTypeList
ENDIF
;
;****************************************************************************************
;*
;*
;* This routine checks if a file can be opened by a particular application.
;* If so, it returns if it needs to be translated first, and if so then how.
;* The FileTypes that the app can open are specified by nativelyOpenableTypes,
;* or if it is NULL, GetFileTypesThatAppCanNativelyOpen is called.
;*
;* Enter: targetDocument document to check if it can be opened
;* appVRefNumHint vRefNum of application to open doc ( can be wrong, and if is, will be used as a starting point)
;* appSignature signature (creator) of application to open doc
;* nativeTypes zero terminated list of FileTypes app can open natively, or NULL to use default list
;* onlyNative whether to consider if document can be translated before opening
;* howToOpen pointer to buffer in which to put how the document can be opened
;* howToTranslate pointer to buffer in which to put a FileTranslationSpec record
;*
;* Exit: howToOpen whether file needs to be translated to be read
;* howToTranslate if file can be translated, buffer filled in with how to translate
;* returns noErr, noPrefAppErr
;
;
; pascal OSErr CanDocBeOpened(const FSSpec *targetDocument, short appVRefNumHint, OSType appSignature, const FileType *nativeTypes, Boolean onlyNative, DocOpenMethod *howToOpen, FileTranslationSpec *howToTranslate)
;
IF ¨ GENERATINGCFM THEN
Macro
_CanDocBeOpened
moveq #30,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION CanDocBeOpened
ENDIF
;
;****************************************************************************************
;*
;* GetFileTranslationPaths
;*
;* This routine returns a list of all ways a translation can occure to or from a FileType.
;* The app is checked to exist. The hint for each app is the VRefNum and DTRefNum
;*
;* Enter: srcDoc source file or NULL for all matches
;* dstDoc destination FileType or NULL for all matches
;* maxResultCount
;* resultBuffer
;* Exit: number of paths
;
;
; pascal short GetFileTranslationPaths(FSSpec *srcDocument, FileType dstDocType, unsigned short maxResultCount, FileTranslationSpecArrayPtr resultBuffer)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetFileTranslationPaths
moveq #56,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION GetFileTranslationPaths
ENDIF
;
;****************************************************************************************
;*
;* GetPathFromTranslationDialog
;*
;* This routine, with a given document, application, and a passed typelist will display the
;* Macintosh Easy Open translation dialog allowing the user to make a choice. The choice
;* made will be written as a preference (so the next call to CanDocBeOpened() will work).
;* The routine returns the translation path information.
;*
;* Enter: theDocument FSSpec to document to open
;* theApplication FSSpec to application to open document
;* typeList Nil terminated list of FileType's (e.g. SFTypeList-like) of types
;* you would like the documented translated to. Order most perferred
;* to least.
;*
;* Exit: howToOpen Translation method needed to open document
;* howToTranslate Translation specification
;* returns Any errors that might occur.
;
;
; pascal OSErr GetPathFromTranslationDialog(const FSSpec *theDocument, const FSSpec *theApplication, TypesBlockPtr typeList, DocOpenMethod *howToOpen, FileTranslationSpec *howToTranslate)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetPathFromTranslationDialog
moveq #55,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION GetPathFromTranslationDialog
ENDIF
;
;****************************************************************************************
;*
;* TranslateFile
;*
;* This routine reads a file of one format and writes it to another file in another format.
;* The information on how to translated is generated by the routine CanDocBeOpened.
;* TranslateFile calls through to the TranslateFile Extension's DoTranslateFile routine.
;* The destination file must not exist. It is created by this routine.
;*
;* Enter: sourceDocument input file to translate
;* destinationDocument output file of translation
;* howToTranslate pointer to info on how to translate
;* Exit: returns noErr, badTranslationSpecErr
;
;
; pascal OSErr TranslateFile(const FSSpec *sourceDocument, const FSSpec *destinationDocument, const FileTranslationSpec *howToTranslate)
;
IF ¨ GENERATINGCFM THEN
Macro
_TranslateFile
moveq #12,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION TranslateFile
ENDIF
;
;****************************************************************************************
;*
;* GetDocumentKindString
;*
;* This routine returns the string the Finder should show for the "kind" of a document
;* in the GetInfo window and in the kind column of a list view.
;*
;* Enter: docVRefNum The volume containing the document
;* docType The catInfo.fdType of the document
;* docCreator The catInfo.fdCreator of the document
;* kindString pointer to where to return the string
;*
;* Exit: kindString pascal string. Ex: "\pSurfCalc spreadsheet"
;* returns noErr, or afpItemNoFound if kind could not be determined
;
;
; pascal OSErr GetDocumentKindString(short docVRefNum, OSType docType, OSType docCreator, Str63 kindString)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetDocumentKindString
moveq #22,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION GetDocumentKindString
ENDIF
;
;****************************************************************************************
;*
;* GetTranslationExtensionName
;*
;* This routine returns the translation system name from a specified TranslationSpec
;*
;* Enter: translationMethod The translation path to get the translation name from
;*
;* Exit: extensionName The name of the translation system
;* returns Any errors that might occur
;
;
; pascal OSErr GetTranslationExtensionName(const FileTranslationSpec *translationMethod, Str31 extensionName)
;
IF ¨ GENERATINGCFM THEN
Macro
_GetTranslationExtensionName
moveq #54,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION GetTranslationExtensionName
ENDIF
;
;****************************************************************************************
;*
;* GetScrapDataProcPtr
;*
;* This is a prototype for the function you must supply to TranslateScrap. It is called to
;* get the data to be translated. The first call TranslateScrap will make to this is to
;* ask for the 'fmts' data. That is a special. You should resize and fill in the handle
;* with a list all the formats that you have available to be translated, and the length of each.
;* (See I.M. VI 4-23 for details of 'fmts'). It will then be called again asking for one of
;* the formats that 'fmts' list said was available.
;*
;* Enter: requestedFormat Format of data that TranslateScrap needs.
;* dataH Handle in which to put the requested data
;* srcDataGetterRefCon Extra parameter for you passed to TranslateScrap
;*
;* Exit: dataH Handle is resized and filled with data in requested format
;
; typedef GetScrapDataUPP GetScrapData
;
;****************************************************************************************
;*
;* TranslateScrap
;*
;* This routine resizes the destination handle and fills it with data of the requested format.
;* The data is generated by translated one or more source formats of data supplied by
;* the procedure srcDataGetter.
;* This routine is automatically called by GetScrap and ReadEdition. You only need to call
;* this if you need to translated scrap style data, but are not using the ScrapMgr or EditionMgr.
;*
;* Enter: sourceDataGetter Pointer to routine that can get src data
;* sourceDataGetterRefCon Extra parameter for dataGetter
;* destinationFormat Format of data desired
;* destinationData Handle in which to store translated data
;*
;* Exit: dstData Handle is resized and filled with data in requested format
;
;
; pascal OSErr TranslateScrap(GetScrapData sourceDataGetter, void *sourceDataGetterRefCon, ScrapType destinationFormat, Handle destinationData, short progressDialogID)
;
IF ¨ GENERATINGCFM THEN
Macro
_TranslateScrap
moveq #14,D0
dc.w $ABFC
EndM
ELSE
IMPORT_CFM_FUNCTION TranslateScrap
ENDIF
ENDIF
ENDIF ; __TRANSLATION__